package cn.edu.xjtu.work.summaryRanges;

import java.util.ArrayList;
import java.util.List;

/**
 * 228. 汇总区间
 * 
 * 给定一个无重复元素的有序整数数组 nums 。
 * 
 * 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说，nums
 * 的每个元素都恰好被某个区间范围所覆盖，并且不存在属于某个范围但不属于nums的数字 x 。
 * 
 */
public class Solution {
  public static void main(String[] args) {
    Solution s = new Solution();
    int[] nums = new int[] { 0, 2, 3, 4, 6, 8, 9 };
    System.out.println(s.summaryRanges(nums));
  }

  public List<String> summaryRanges(int[] nums) {
    if (nums == null) {
      return null;
    }
    List<String> ret = new ArrayList<>();
    if (nums.length == 0) {
      return ret;
    }

    int start = nums[0];
    int curr = nums[0];
    for (int i = 1; i < nums.length; i++) {
      if (nums[i] == curr + 1) {
        curr = nums[i];
      } else {
        ret.add(toString(start, curr));
        start = nums[i];
        curr = nums[i];
      }
    }
    ret.add(toString(start, curr));
    return ret;
  }

  public String toString(int a, int b) {
    if (a == b) {
      return a + "";
    }
    return a + "->" + b;
  }

}
